<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of Usuario
 *
 * @author Jose Tejada
 */
class UsuarioDAO implements IFEntityDAO {

    private static $tbUsuario = NULL;
    private static $asAllFields = array( "*" );

    public static function traerPorId( $iId ) {
        $ub = NULL;
        if ( self::$tbUsuario == NULL ) {
            self::$tbUsuario = Tablas::getTbUsuario();
        }
        try {
            if ( $iId != NULL && !empty( $iId ) ) {
                $result = ManejoBD::retornarRegistro(
                                self::$tbUsuario->getNombre()
                                , self::$asAllFields
                                , self::$tbUsuario->getCIdUsuario() . "=" . $iId . " AND activo=1"
                );
                if ( !is_null( $result ) && count( $result ) > 0 ) {
                    $lstUsuariosBean = self::getUsersFromResult( $result );
                    $ub = $lstUsuariosBean[ 0 ];
                }
            }
        } catch ( Exception $e ) {
            error_log( $e->getMessage(), 3, "errores.log" );
            throw $e;
        }
        return $ub;
    }

    public static function traerPorUsername( $sUsername ) {
        $ub = NULL;
        $lstUsuariosBean = Array( );
        if ( self::$tbUsuario == NULL ) {
            self::$tbUsuario = Tablas::getTbUsuario();
        }
        try {
            if ( isset( $sUsername ) && $sUsername != NULL && !empty( $sUsername ) ) {
                $result = ManejoBD::retornarRegistro(
                                self::$tbUsuario->getNombre()
                                , self::$asAllFields
                                , self::$tbUsuario->getCUsername() . "='" . $sUsername . "' AND activo=1"
                );
                if ( !is_null( $result ) && count( $result ) > 0 ) {
                    $lstUsuariosBean = self::getUsersFromResult( $result );
                    $ub = $lstUsuariosBean[ 0 ];
                }
            }
        } catch ( Exception $e ) {
            error_log( $e->getMessage(), 3, "errores.log" );
            throw $e;
        }
        return $ub;
    }

    public static function login( $sUsuario, $sPassword ) {
        $ub = NULL;
        $lstUsuariosBean = NULL;
        if ( self::$tbUsuario == NULL ) {
            self::$tbUsuario = Tablas::getTbUsuario();
        }
        try {
            $result = ManejoBD::login(
                            self::$tbUsuario->getNombre()
                            , self::$tbUsuario->getCUsername()
                            , $sUsuario
            );
            if ( !is_null( $result ) && count( $result ) > 0 ) {
                if ( strcmp( sha1( $result[ 0 ][ self::$tbUsuario->getCPassword() ] ), sha1( $sPassword ) ) == 0 ) {
                    $lstUsuariosBean = self::getUsersFromResult( $result );
                    $ub = $lstUsuariosBean[ 0 ];
                }
            } else {
                $ub = EC_USER_OR_PASSWORD_INCORRECTS;
            }
        } catch ( Exception $e ) {
            error_log( $e->getMessage(), 3, "errores.log" );
            throw $e;
        }
        return $ub;
    }

    public static function traerTodos() {
        $result = NULL;
        $iNumRegistros = 0;
        $lstUsuariosBean = Array( );
        if ( is_null( self::$tbUsuario ) ) {
            self::$tbUsuario = Tablas::getTbUsuario();
        }

        try {
            $result = ManejoBD::retornarRegistro(
                            self::$tbUsuario->getNombre(), self::$asAllFields, "activo=1" );
            if ( !is_null( $result ) && count( $result ) > 0 ) {
                $lstUsuariosBean = self::getUsersFromResult( $result );
            }
        } catch ( Exception $e ) {
            error_log( $e->getMessage(), 3, "errores.log" );
            throw $e;
        }
        return $lstUsuariosBean;
    }

    public static function insertar( EntityBean $usuarioBean ) {
        $blResp = FALSE;
        if ( is_null( self::$tbUsuario ) ) {
            self::$tbUsuario = Tablas::getTbUsuario();
        }

        try {
            if ( !is_null( $usuarioBean ) ) {
                $blResp = ManejoBD::insertarDatos(
                                self::$tbUsuario->getNombre()
                                , self::$tbUsuario->getTodosCampos()
                                , $usuarioBean->getTodosValores()
                );
            }
        } catch ( Exception $e ) {
            error_log( $e->getMessage(), 3, "errores.log" );
            throw $e;
        }
        return $blResp;
    }

    public static function actualizar( EntityBean $usuarioBean, $sCondicion ) {
        $blResp = FALSE;
        if ( is_null( self::$tbUsuario ) ) {
            self::$tbUsuario = Tablas::getTbUsuario();
        }

        try {
            if ( !is_null( $usuarioBean ) ) {
                $blResp = ManejoBD::actualizarDatos(
                                self::$tbUsuario->getNombre()
                                , self::$tbUsuario->getTodosCampos()
                                , $usuarioBean->getTodosValores()
                                , $sCondicion
                );
            }
        } catch ( Exception $e ) {
            error_log( $e->getMessage(), 3, "errores.log" );
            throw $e;
        }
        return $blResp;
    }

    public static function eliminarPorId( EntityBean $usuarioBean ) {
        $blResp = FALSE;
        if ( is_null( self::$tbUsuario ) ) {
            self::$tbUsuario = Tablas::getTbUsuario();
        }

        try {
            if ( !is_null( $usuarioBean ) ) {
                $blResp = ManejoBD::eliminarRegistro(
                                self::$tbUsuario->getNombre()
                                , self::$tbUsuario->getCIdUsuario() . "=" . $usuarioBean->getIdUsuario() );
            }
        } catch ( Exception $e ) {
            error_log( $e->getMessage(), 3, "errores.log" );
            throw $e;
        }
        return $blResp;
    }

    private static function getUsersFromResult( $result ) {
        $lstUsuariosBean = array( );
        if ( isset( $result ) && is_array( $result ) ) {
            $iNumRegistros = count( $result );
            for ( $i = 0; $i < $iNumRegistros; $i++ ) {
                
                $ub = new UsuarioBean(
                                $result[ $i ][ self::$tbUsuario->getCIdUsuario() ]
                                , UsuarioTipoDAO::traerPorId( $result[ $i ][ self::$tbUsuario->getCIdUsuarioTipo() ] )
                                , $result[ $i ][ self::$tbUsuario->getCNombre() ]
                                , $result[ $i ][ self::$tbUsuario->getCApPaterno() ]
                                , $result[ $i ][ self::$tbUsuario->getCApMaterno() ]
                                , $result[ $i ][ self::$tbUsuario->getCFechaNac() ]
                                , $result[ $i ][ self::$tbUsuario->getCDni() ]
                                , $result[ $i ][ self::$tbUsuario->getCTlfFijo() ]
                                , $result[ $i ][ self::$tbUsuario->getCTlfCelular() ]
                                , $result[ $i ][ self::$tbUsuario->getCSexo() ]
                                , $result[ $i ][ self::$tbUsuario->getCEmail() ]
                                , $result[ $i ][ self::$tbUsuario->getCUsername() ]
                                , $result[ $i ][ self::$tbUsuario->getCPassword() ]
                                , $result[ $i ][ self::$tbUsuario->getCFoto() ]
                                , $result[ $i ][ self::$tbUsuario->getCHabilitado() ]
                                , $result[ $i ][ self::$tbUsuario->getCActivo() ]
                );
                $lstUsuariosBean[ $i ] = $ub;
            }
        }
        return $lstUsuariosBean;
    }

}

?>
